This document relates to access to metamodels, metadata and other program resources. More particularly, this document describes systems and methods for accessing these resources from applications as well as from a repository in a server.
Metadata, in particular the exchange of metadata and its programmatic access through application programming interfaces (APIs), plays a central role in almost any software product. Metadata defines the structure and meaning of data objects and is used by applications to define, relate and manipulate those objects. A metamodel describes the structure of the metadata. In order to make software products more interoperable, a general trend is to base the access, exchange, and structure of metadata on common standards, i.e. common access APIs, common interchange formats and common metamodels.
The Meta Object Facility (MOF) standard, promulgated by the Object Management Group (OMG) defines a language to describe metamodels and how to handle associated metadata. The Java Metadata Interface (JMI) standard, defined by the JCP process) brings the metamodel definition to the Java world. It describes a set of generic interfaces to access metamodels and metadata, as well as how Java interfaces should be generated according to a metamodel. Moreover, it defines the behavior of classes implementing theses interfaces. A Metamodel Repository (MMR) is an implementation of a MOF, and is a JMI-compliant repository handling metamodels, metadata and other program resources.
When multiple applications access the same repository, an issue arises regarding the storage and deployment of metamodels, metadata and other program resources, especially in a shared-resource environment. The required resources may be contained in some applications, but other metadata resources may be deployed separately, within the repository, the server or even in other applications.